package client;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

import DTO.VendeurDTO;

/**
 * Classe décrivant la fenêtre "Voir Annonce".
 * 
 * @author Julien Dubois
 * @version 1.0 (Mai 2012)
 *
 */
@SuppressWarnings("serial")
public class ClientAnnonceVoirAnnonce extends JFrame implements ActionListener, WindowListener
{
	
	//DECLARATION DES VARIABLES DE LA CLASSE 
	
	/**
	 * Panel général de fond.
	 */
	private JPanel grandPanel = new JPanel();
	
	/**
	 * Panel principal contenant nos éléments.
	 */
	private JPanel panel;
	
	/**
	 * Layouts choisis pour agencer nos éléments.
	 */
	private BorderLayout borderLayoutPrincipal;
	private FlowLayout flowLayout;
	
	/**
	 * Bouton de la fenêtre.
	 */
	private JButton btnRetour ;
	
	/**
	 * Booleen de notre fenêtre.
	 */
	//le booleen quitter sert à assurer proprement la fermeture de la connexion avec le serveur. 
	private boolean quitter = true;
	
	
	
	// CONSTRUCTEUR DE LA FENETRE 
	
	/**
	 * Constructeur par défaut.
	 */
	public ClientAnnonceVoirAnnonce()
	{
		/*
		 * Va nous pemettre d'utiliser this.dispose pour disposer d'un fenêtre quand on en a plus besoin (pour la fermer)
		 * Ce bout de code sert à fermer la connexion avec le serveur proprement (pas de message d'erreur) lorsque l'on clique sur la croix rouge.
		 */
		this.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent arg0)
			{
				if(quitter)
				{
					ClientCommunication.getInstance().fermerConnexion();
				}
			}
		});
		
		this.setTitle("Petites Annonces - Détails");
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setVisible(true);


		//on définit la taille de la fenêtre
		//600x660 pour respecter au mieux la taille de l'image d'accueil.
		this.setSize(600,660);
		
		
		//On n'empêche le redimensionnement.
		this.setResizable(false);
		
		
		//On colore le panel dans un gris sympathique et soyeux.
		grandPanel.setBackground(Color.LIGHT_GRAY);
		this.setContentPane(grandPanel);
		
		
		//BorderLayout pour agencer nos éléments.
		borderLayoutPrincipal = new BorderLayout();
		this.setLayout(borderLayoutPrincipal);
		
				
		
		//PERSONNALISATION DE LA FENETRE A PARTIR DICI 
		
		//FlowLayout pour agencer nos éléments.
		flowLayout = new FlowLayout();

		
		//Association Layout <-> Panel + CENTER + couleur.
		panel = new JPanel();
		panel.setLayout(flowLayout);
		this.getContentPane().add(panel, BorderLayout.CENTER);
		panel.setBackground(Color.LIGHT_GRAY);
		
		
		//Retour chariot (on va à la ligne).
		JLabel espacevide0 = new JLabel();
		espacevide0.setPreferredSize(new Dimension(285, 30));
		panel.add(espacevide0);
		
		
		//TexteArea du titre
		JTextArea jtaTitre = new JTextArea(ClientCommunication.getInstance().getAnnonceStocke().getTitre());
		jtaTitre.setPreferredSize(new Dimension(300, 60));
		jtaTitre.setFocusable(false);
		jtaTitre.setBackground(Color.lightGray);
		panel.add(jtaTitre);
		
		
		//Espace pour agencer nos éléments.
		JLabel espacevide1 = new JLabel();
		espacevide1.setPreferredSize(new Dimension(490, 30));
		panel.add(espacevide1);
		
		
		//on stocke l'ID du vendeur corresponant à l'annonce : 
		int idVendeurAnnnonce = ClientCommunication.getInstance().getAnnonceStocke().getId_vendeur();
		//on recupere le vendeur correspondant à cet ID
		VendeurDTO vendeurAnnonce = ClientCommunication.getInstance().recupererVendeur(idVendeurAnnnonce);
		
		
		//TexteArea du nom du vendeur.
		JTextArea jlNomEmmetteur = new JTextArea(vendeurAnnonce.getNom());
		jlNomEmmetteur.setPreferredSize(new Dimension(100, 30));
		jlNomEmmetteur.setFocusable(false);
		jlNomEmmetteur.setBackground(Color.LIGHT_GRAY);
		panel.add(jlNomEmmetteur);
		
		
		//Espace entre le prenom et le nom.
		JLabel espacevide2 = new JLabel();
		espacevide2.setPreferredSize(new Dimension(50, 30));
		panel.add(espacevide2);
		
		
		//TexteArea du prénom du vendeur.
		JTextArea jtaPrenomEmetteur = new JTextArea(vendeurAnnonce.getPrenom());
		jtaPrenomEmetteur.setPreferredSize(new Dimension(100, 30));
		jtaPrenomEmetteur.setFocusable(false);
		jtaPrenomEmetteur.setBackground(Color.LIGHT_GRAY);
		panel.add(jtaPrenomEmetteur);
		
		
		//Retour chariot (on va à la ligne).
		JLabel espacevide3 = new JLabel();
		espacevide3.setPreferredSize(new Dimension(250, 30));
		panel.add(espacevide3);
		
		
		//TextArea du télephone.
		JTextArea jtaTelephone = new JTextArea(vendeurAnnonce.getTelephone());
		jtaTelephone.setPreferredSize(new Dimension(100, 30));
		jtaTelephone.setFocusable(false);
		jtaTelephone.setBackground(Color.LIGHT_GRAY);
		panel.add(jtaTelephone);
		
		
		//Espace entre le phone et l'email.
		JLabel espacevide4 = new JLabel();
		espacevide4.setPreferredSize(new Dimension(50, 30));
		panel.add(espacevide4);
		
		
		//TextArea de l'email. 
		JTextArea jtaEmail = new JTextArea(vendeurAnnonce.getEmail());
		jtaEmail.setPreferredSize(new Dimension(100, 30));
		jtaEmail.setFocusable(false);
		jtaEmail.setBackground(Color.LIGHT_GRAY);
		panel.add(jtaEmail);
		
		
		//Retour chariot (on va à la ligne).
		JLabel espacevide5 = new JLabel();
		espacevide5.setPreferredSize(new Dimension(250, 30));
		panel.add(espacevide5);
		
		
		String type;
		String dept = ClientCommunication.getInstance().getAnnonceStocke().getDepartement();
		boolean emploi = ClientCommunication.getInstance().getAnnonceStocke().isEmploi_stage();
		if (emploi == true)
		{
			type = "Offres d'Emplois/Stages";
		}
		else
		{
			type = "Ventes Objets/Services" ;
		}
		
		//on affiche le type d'annonce
		JTextArea jtaType = new JTextArea();
		jtaType.setText(type);
		jtaType.setPreferredSize(new Dimension(300, 30));
		jtaType.setFocusable(false);
		jtaType.setBackground(Color.LIGHT_GRAY);
		panel.add(jtaType);
		
		//on va à la ligne
		JLabel espacevide6 = new JLabel();
		espacevide6.setPreferredSize(new Dimension(210, 30));
		panel.add(espacevide6);
		
		//on affiche le departement de l'annonce
		JTextArea jtaDept = new JTextArea();
		jtaDept.setText("Département : " + dept);
		jtaDept.setPreferredSize(new Dimension(100, 20));
		jtaDept.setFocusable(false);
		jtaDept.setBackground(Color.LIGHT_GRAY);
		panel.add(jtaDept);
		
		//on va à la ligne
		JLabel espacevide7 = new JLabel();
		espacevide7.setPreferredSize(new Dimension(410, 30));
		panel.add(espacevide7);
		
		//le corps de l'annonce
		String corps = ClientCommunication.getInstance().getAnnonceStocke().getContenu();
		JTextArea taCorps = new JTextArea();
		taCorps.setPreferredSize(new Dimension(500, 250));
		taCorps.setLineWrap(true);
		taCorps.setBackground(Color.LIGHT_GRAY);
		taCorps.setText(corps) ;
		taCorps.setFocusable(false);
		panel.add(taCorps);
		
		//on va à la ligne
		JLabel espacevide8 = new JLabel();
		espacevide8.setPreferredSize(new Dimension(410, 30));
		panel.add(espacevide8);
		
		//Bouton final
		btnRetour = new JButton("Retour à l'accueil") ;
		panel.add(btnRetour);
		btnRetour.addActionListener(this);
	}
	
	@Override
	public void actionPerformed(ActionEvent e)
	{
		Object event = e.getSource();
		
		if (event == btnRetour)
		{
			if(ClientCommunication.getInstance().getVendeurStocke().getId() == -1)
			{
				// Personne n'est loggé
				quitter = false;
				ClientCommunication.getInstance().creerFenetre(grandPanel, "fenetreAccueil");
			}
			else
			{
				// Quelqu'un est loggé
				quitter = false;
				ClientCommunication.getInstance().creerFenetre(grandPanel, "fenetreUneFoisConnecte");
			}
			
			this.dispose();
		}
		
		
	}

	@Override
	public void windowActivated(WindowEvent e)
	{
		
	}

	@Override
	public void windowClosed(WindowEvent e)
	{
		
	}

	@Override
	public void windowClosing(WindowEvent e)
	{
		
	}

	@Override
	public void windowDeactivated(WindowEvent e)
	{
		
	}

	@Override
	public void windowDeiconified(WindowEvent e)
	{
		
	}

	@Override
	public void windowIconified(WindowEvent e)
	{
		
	}

	@Override
	public void windowOpened(WindowEvent e)
	{
		
	}

}
